<method name="GetAppId">
<arg type="s" direction="out"/>
</method>
+ <method name="GetFlags">
+ <arg type="u" direction="out"/>
+ </method>
<method name="GetReason">
<arg type="s" direction="out"/>
</method>
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
-/* exported PresenceStatus, Presence, Inhibitor, SessionManager */
+/* exported PresenceStatus, Presence, Inhibitor, SessionManager, InhibitFlags */
const Gio = imports.gi.Gio;
function SessionManager(initCallback, cancellable) {
return new SessionManagerProxy(Gio.DBus.session, 'org.gnome.SessionManager', '/org/gnome/SessionManager', initCallback, cancellable);
}
+
+var InhibitFlags = {
+ LOGOUT: 1 << 0,
+ SWITCH: 1 << 1,
+ SUSPEND: 1 << 2,
+ IDLE: 1 << 3,
+ AUTOMOUNT: 1 << 4,
+};
}
let app = findAppFromInhibitor(inhibitor);
+ const [flags] = app ? inhibitor.GetFlagsSync() : [0];
- if (app) {
+ if (app && flags & GnomeSession.InhibitFlags.LOGOUT) {
let [description] = inhibitor.GetReasonSync();
let listItem = new Dialog.ListSectionItem({
icon_actor: app.create_icon_texture(_ITEM_ICON_SIZE),
});
this._applicationSection.list.add_child(listItem);
} else {
- // inhibiting app is a service, not an application
+ // inhibiting app is a service (not an application) or is not
+ // inhibiting logout/shutdown
this._applications.splice(this._applications.indexOf(inhibitor), 1);
}